package org.poseidon.report.service.impl;

import java.util.List;

import org.poseidon.common.exception.ServiceException;
import org.poseidon.common.utils.DateUtils;
import org.poseidon.report.domain.vo.ProductVO;
import org.poseidon.report.service.IBuProjectService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.poseidon.report.mapper.BuProductMapper;
import org.poseidon.report.domain.BuProduct;
import org.poseidon.report.service.IBuProductService;

/**
 * 业务域Service业务层处理
 * 
 * @author gfc
 * @date 2022-02-22
 */
@Service
public class BuProductServiceImpl implements IBuProductService 
{
    @Autowired
    private BuProductMapper buProductMapper;
    @Autowired
    private IBuProjectService projectService;

    /**
     * 查询业务域
     * 
     * @param id 业务域主键
     * @return 业务域
     */
    @Override
    public BuProduct selectBuProductById(Long id)
    {
        return buProductMapper.selectBuProductById(id);
    }

    /**
     * 查询业务域列表
     * 
     * @param buProduct 业务域
     * @return 业务域
     */
    @Override
    public List<BuProduct> selectBuProductList(BuProduct buProduct)
    {
        return buProductMapper.selectBuProductList(buProduct);
    }

    /**
     * 新增业务域
     * 
     * @param buProduct 业务域
     * @return 结果
     */
    @Override
    public int insertBuProduct(BuProduct buProduct)
    {
        buProduct.setCreateTime(DateUtils.getNowDate());
        return buProductMapper.insertBuProduct(buProduct);
    }

    /**
     * 修改业务域
     * 
     * @param buProduct 业务域
     * @return 结果
     */
    @Override
    public int updateBuProduct(BuProduct buProduct)
    {
        buProduct.setUpdateTime(DateUtils.getNowDate());
        return buProductMapper.updateBuProduct(buProduct);
    }

    /**
     * 批量删除业务域
     * 
     * @param ids 需要删除的业务域主键
     * @return 结果
     */
    @Override
    public int deleteBuProductByIds(List<Long>  ids)
    {
       int count =  projectService.countProjectInProductIds(ids);
       if(count>0){
           throw new ServiceException("业务域下有项目 不能删除",20011);
       }
        return buProductMapper.deleteBuProductByIds(ids);
    }

    /**
     * 删除业务域信息
     * 
     * @param id 业务域主键
     * @return 结果
     */
    @Override
    public int deleteBuProductById(Long id)
    {
        return buProductMapper.deleteBuProductById(id);
    }

    @Override
    public List<ProductVO> selectAll() {
        return buProductMapper.selectAll();
    }
}
